package main

import (
	"fmt"
	"sync"
	"time"
)

func main() {
	var wg sync.WaitGroup

	// 启动3个goroutine
	for i := 1; i <= 3; i++ {
		wg.Add(1) // 增加一个等待的任务

		go func(id int) {
			defer wg.Done() // 任务完成时调用

			fmt.Printf("工人%d开始工作\n", id)
			time.Sleep(time.Second) // 模拟工作
			fmt.Printf("工人%d完成工作\n", id)
		}(i)
	}

	fmt.Println("老板在等所有工人完成工作...")
	wg.Wait() // 等待所有工人完成
	fmt.Println("所有工人都完成了！老板可以下班了")
}
